class OrderItem < ActiveRecord::Base
  belongs_to :order
  belongs_to :product

  #berekend de totale kosten van een order_item
  def total_cost
    original_price * quantity
  end
  
  #kijkt of er nog voldoende producten op voorraad zijn en geeft aan hoeveel nog
  def check_stock
    rest_quantity = quantity-shipped_quantity
    stock = 0
    if(product != nil)
      stock = product.stock
    end
    return stock-rest_quantity
  end
  
  #geeft de waarde terug van de voorraad, zijn er geen producten op voorraad dan krijg je niet terug ipv een getal
  def show_stock
    stock = check_stock
    if(stock<0)
      return 'Niet'
    elsif(product != nil)
      return product.stock.to_s
    else
      return '-'
    end
  end
  
  #geeft een hash terug die wordt gebruikt om in de admin de hoeveelheid producten die nog verstuurd moeten worden te veranderen, dit getal moet beginnen vanaf het aantal dat verzonden is
  def get_selection_quantities()
    selection = {}
    for i in shipped_quantity..quantity
      selection[i] = i
    end
  end
  
  #verandert de verzonden hoeveelheid producten naar volledig bestelde hoeveelheid, en update daarin ook gelijk de voorraad producten
  def change_shipped()
    shipped = self.quantity
    new_shipped = shipped-self.shipped_quantity
    if(self.product != nil)
      new_product_stock = self.product.stock-new_shipped
      if(new_product_stock>0)
        self.product.stock = new_product_stock
      else
        self.product.stock = 0
      end
      self.product.save
    end
    self.write_attribute(:shipped_quantity,shipped)
    self.save
  end
  
  #verandert de verzonden hoeveelheid producten naar 0 en zet de stock van het gekoppelde product weer terug
  def change_cancelled()
    shipped = self.shipped_quantity
    if(self.product != nil)
      new_product_stock = shipped+self.product.stock
      self.product.stock = new_product.stock
      self.product.save
    end
    self.write_attribute(:shipped_quantity,0)
    self.save
  end
  
  def check_fully_shipped()
    return quantity == shipped_quantity
  end
end
